/**
 * Midlet chính của chương trình
 */

import javax.microedition.lcdui.Display;
import javax.microedition.midlet.MIDlet;

public class AppMidlet extends MIDlet {
	
	Display display;

	public AppMidlet() {
		display = Display.getDisplay(this);
	}

	/**
	 * Các sao lưu cần thiết trước khi thoát chương trình
	 */
	protected void destroyApp(boolean unc) {
		/*
		 * Ghi lại Bảng xếp hạng
		 * Chú ý: recs là mảng các đối tượng kiểu ScoreRecord
		 * Xem thêm trong lớp ScoreRecord
		 */
		MyIO.writeHighScore(HighScoreCanvas.recs);
		
		/*
		 * Nếu user đang chơi dở dang 1 cuộc chơi thì cũng ghi lại
		 */
		if (MenuCanvas.gs != null) {
			MyIO.saveGameShape(MenuCanvas.gs);
		}
	}

	protected void pauseApp() {

	}

	protected void startApp() {
		SplashScreen spl = new SplashScreen(display);
		/*
		 * Sử dụng chính Canvas SplashScreen để xác định ảnh nào sẽ được
		 * dùng (các file .png)
		 * Thông qua width của SplashScreen (cũng là width của loại điện thoại này)
		 */
		ThemeManager.detect(spl.getWidth());
		EnableSound enable = new EnableSound(display, this);
		
		/*
		 * Canvas sẽ xuất hiện kế tiếp sau màn hình SplashScreen
		 * sẽ là Canvas xác nhận âm thanh: EnableSound
		 */
		spl.setNextScreen(enable);
		
		/*
		 * Hiện lên SplashScreen
		 * (tất nhiên chương trình sẽ tự động gọi showNotify() của SplashScreen)
		 * Chú ý: trong hàm showNotify của SplashScreen chúng ta lập tức
		 * chạy 1 Thread, và 3 giây sau sẽ hiện Canvas EnableSound
		 * Như vậy màn hình đợi SplashScreen chỉ hiện lên đúng 3 giây
		 */
		display.setCurrent(spl);
	}
	
	public void exit() {
		destroyApp(false);
		notifyDestroyed();
	}

}
